SWIG

SWIG est un outil logiciel d'interfaçage pour lier des programmes en C/C++ avec des programmes de plus haut-niveau comme Python, PHP, JavaScript…"

Pré-requis

pcre-config qui vient avec le paquet libpcre3-dev:

apt install libpcre3-dev

g++ qui vient avec build-essential

apt install build-essential

Installation

Télécharger le paquet swig sur http://www.swig.org/download.html 1)

Décompresser le fichier téléchargé:

tar xvfz swig-3.0.12

Lancer l'installation comme préciser sur le site de Swig:

./configure
make

et enfin l'installation finale avec les droits d'administration

make install

Utilisation

Le fichier interface (.i)

Il contient les variables et fonctions qui vont être dans l'interface et donc appelées par le(s) programme(s) de haut-niveau

exemple.i
/* exemple.i */
 %module exemple
 %{
 /* Put header files here or function declarations like below */
 extern double My_variable;
 extern void set_My_variables(double x, int i);
 extern double get_result(void);
 extern int get_result_entier(void);
 extern void place_mode(int i);
 extern char *get_time();
 %}
 
 extern double My_variable;
 extern void set_My_variables(double x, int i);
 extern double get_result(void);
 extern int get_result_entier(void);
 extern void place_mode(int i);
 extern char *get_time();

Créer les fichiers d'interfaçage

Exemple entre c++ et python:

swig -python -c++ mon_interface.i

Créer l'interface (lib)

Compilation avec les fichiers d'interfaçage, ici example.cxx :

 g++ -c -std=c++14 src/*.cpp src/exemple.cxx -I./lib

Éditions de liens:

g++ -shared *.o -o _exemple.pyd 

Utilisation de la librairie ainsi créé

Dans notre exemple en python, il suffit de réaliser un import:

 >>> import exemple 

Retour d'expériences

Avantages

Inconvénients

Voir aussi

zeromq

Liens


Contributeurs principaux: bcag2

1)
Vous pouvez passer via http://www.swig.org/survey.html afin de préciser aux développeurs quel binding (vers Python, PHP…) vous allez utiliser